﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Maestro
{
    public partial class Marca : Form
    {
        public Marca()
        {
            InitializeComponent();
        }

        private void Marca_Load(object sender, EventArgs e)
        {
            LoadGridMarca();
        }

        private void LoadGridMarca()
        {
            LogicaNegocio.MarcaBLL marcaBLL = new LogicaNegocio.MarcaBLL();
            gridMarca.DataSource = marcaBLL.Listar();
            gridMarca.ClearSelection();
        }

        private void LimpiarFormulario()
        {
            txtPrefijo.ResetText();
            txtMarca.ResetText();
            btnAgregar.Tag = null;
            btnAgregar.Text = "Guardar";

            btnCancelar.Visible = false;
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            LogicaNegocio.MarcaBLL marcaBLL = new LogicaNegocio.MarcaBLL();

            try
            {
                if (btnAgregar.Tag == null)
                {
                    //insertar
                    Entidades.Marca newMarca =
                        new Entidades.Marca()
                        {
                            Prefijo = txtPrefijo.Text.Trim(),
                            NombreMarca = txtMarca.Text.Trim(),
                            FechaRegistro = DateTime.Now,
                            Activo = 1
                        };

                    int resultado = marcaBLL.Guardar(newMarca);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Marca registrada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridMarca();
                    }
                }
                else
                {
                    if (btnAgregar.Tag.ToString() == "M")
                    {
                        //actualizar
                        if (gridMarca.SelectedRows.Count > 0)
                        {
                            Entidades.Marca updMarca =
                                new Entidades.Marca()
                                {
                                    IdMarca = (gridMarca.SelectedRows[0].DataBoundItem as Entidades.Marca).IdMarca,
                                    Prefijo = txtPrefijo.Text.Trim(),
                                    NombreMarca = txtMarca.Text.Trim(),
                                    FechaModificacion = DateTime.Now
                                };

                            int resultado = marcaBLL.Actualizar(updMarca);

                            if (resultado > 0)
                            {
                                MessageBox.Show("Marca actualizada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                LimpiarFormulario();
                                LoadGridMarca();
                            }
                        }
                    }
                }
            }
            catch (ApplicationException aex)
            {
                MessageBox.Show(aex.Message, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridMarca.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Esta seguro en eliminar Marca seleccionada?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (dr == DialogResult.Yes)
                {
                    Entidades.Marca selMarca = gridMarca.SelectedRows[0].DataBoundItem as Entidades.Marca;

                    LogicaNegocio.MarcaBLL marcaBLL = new LogicaNegocio.MarcaBLL();
                    int resultado = marcaBLL.Eliminar(selMarca);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Marca eliminada", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridMarca();
                    }
                }
            }
        }

        private void gridMarca_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridMarca.DataSource != null)
            {
                gridMarca.Columns["IdMarca"].Visible = false;
                gridMarca.Columns["Prefijo"].HeaderText = "Prefijo";
                gridMarca.Columns["NombreMarca"].HeaderText = "Marca";
                gridMarca.Columns["Statusflag"].Visible = false;
                gridMarca.Columns["FechaRegistro"].Visible = false;
                gridMarca.Columns["UsuarioRegistro"].Visible = false;
                gridMarca.Columns["FechaModificacion"].Visible = false;
                gridMarca.Columns["UsuarioModificacion"].Visible = false;
                gridMarca.Columns["Activo"].Visible = false;
            }
        }

        private void gridMarca_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridMarca.SelectedRows.Count > 0)
            {
                Entidades.Marca selectedMarca = gridMarca.SelectedRows[0].DataBoundItem as Entidades.Marca;

                if (selectedMarca != null)
                {
                    btnAgregar.Tag = "M";
                    btnAgregar.Text = "Modificar";

                    btnCancelar.Visible = true;
                    txtPrefijo.Text = selectedMarca.Prefijo.Trim();
                    txtMarca.Text = selectedMarca.NombreMarca.Trim();
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimpiarFormulario();
            gridMarca.ClearSelection();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
